package algo

import (
	"math/rand"
	"time"
)

// 根据系统红包的剩余数量、剩余金额，使用二倍均值算法：二倍的最大可用金额平均值（防止出现0值），计算出抢到的红包金额
func DoubleAverage(count, amount int64) int64 {
	if count == 1 {
		return amount
	}
	max := amount - min*count        //计算出最大可用金额
	avg := max / count               //计算最大可用平均值
	avg2 := 2*avg + min              //二倍均值基础在加上最小金额，防止出现0值
	rand.Seed(time.Now().UnixNano()) //随机红包金额序列元素，把二倍均值作为随机的最大数
	x := rand.Int63n(avg2) + min
	return x
}
